﻿#pragma once
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

// OSS操作类
class OssOperate
{
public:
	// 单例模式（最推荐的懒汉式，线程安全）
	static OssOperate &GetInstance() {
		static OssOperate m_instance;
		return m_instance;
	}
	// 创建存储空间
	bool createBucket();
	// 上传文件
	bool upload(std::string objectName, std::string localName);
	// 下载文件
	bool download(std::string objectName, std::string nameToSave);
	// 删除文件
	bool delFile(std::string objectName);
	// 列举文件
	bool listObjects();

private:
	// 构造函数定义为 private，这就保证了必须通过GetInstance方法才能获取到唯一的m_instance实例
	OssOperate();

	// OSS客户端
	OssClient *m_client;
	// OSS账号信息
	std::string m_accessKeyId;
	std::string m_accessKeySecret;
	std::string m_endpoint;
	std::string m_bucketName;
};